package com.dragon.loan.entity;


import com.marvels.common.utils.StringUtils;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * @Description ：查询条件
 * @Author ：qiaohonglei
 * @Date ：2017年02月23日11时34分
 */
public class Searchable {

    private Map<String,Object> map = new HashMap<String,Object>();

    public void addParam(String param,Object value) {
        map.put(param,value);
    }

    public void removeParam(String param) {
        map.remove(param);
    }

    @Override
    public String toString() {
        StringBuffer sbuf = new StringBuffer();
        for(Iterator<String> iterator = map.keySet().iterator();iterator.hasNext();) {
            String key = iterator.next();
            int index = key.lastIndexOf("_");
            String propertyName = key.substring(0,index);
            Object value = map.get(key);
            if(String.class.isInstance(value)) {
                if(StringUtils.isNullOrEmpty((String) value)) {
                    continue;
                }
            } else if(value == null) {
                continue;
            }
            sbuf.append(" and ").append(propertyName);
            switch (key.substring(index+1)) {
                case "eq" :
                    if(String.class.isInstance(value)) {
                        sbuf.append(" = '").append(value).append("'");
                    } else {
                        sbuf.append(" = ").append(value);
                    }
                    break;
                case "llk" :
                    sbuf.append(" like '%").append(value).append("'");
                    break;
                case "rlk":
                    sbuf.append(" like '").append(value).append("%'");
                    break;
                case "lk" :
                    sbuf.append(" like '%").append(value).append("%'");
                    break;
                case "lt" :
                    if(String.class.isInstance(value)) {
                        sbuf.append(" > '").append(value).append("'");
                    } else {
                        sbuf.append(" > ").append(value);
                    }
                    break;
                case "rt" :
                    if(String.class.isInstance(value)) {
                        sbuf.append(" < '").append(value).append("'");
                    } else {
                        sbuf.append(" < ").append(value);
                    }
                    break;
                case "in" :
                	sbuf.append(" in (").append(value).append(")");
                	break;
            }
        }
        return sbuf.toString();
    }
}
